diff options
Diffstat (limited to 'app/[lng]/partners/(partners)/dolce-upload/page.tsx')
| -rw-r--r-- | app/[lng]/partners/(partners)/dolce-upload/page.tsx | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/app/[lng]/partners/(partners)/dolce-upload/page.tsx b/app/[lng]/partners/(partners)/dolce-upload/page.tsx new file mode 100644 index 00000000..d44e71b6 --- /dev/null +++ b/app/[lng]/partners/(partners)/dolce-upload/page.tsx @@ -0,0 +1,60 @@ +import { Suspense } from "react"; +import { Skeleton } from "@/components/ui/skeleton"; +import { Card, CardContent, CardHeader } from "@/components/ui/card"; +import DolceUploadPage from "./dolce-upload-page"; +import { Shell } from "@/components/shell"; + +export const metadata = { + title: "DOLCE 업로드", + description: "설계문서 업로드 및 관리", +}; + +// ============================================================================ +// 로딩 스켈레톤 +// ============================================================================ + +function DolceUploadSkeleton() { + return ( + <Card> + <CardHeader> + <div className="flex items-center justify-between"> + <Skeleton className="h-8 w-32" /> + <Skeleton className="h-10 w-40" /> + </div> + </CardHeader> + <CardContent className="space-y-4"> + <Skeleton className="h-32 w-full" /> + <Skeleton className="h-96 w-full" /> + </CardContent> + </Card> + ); +} + +export default async function DolceUploadPageWrapper({ + searchParams, +}: { + searchParams: Promise<{ [key: string]: string | string[] | undefined }>; +}) { + const params = await searchParams; + + return ( + <Shell> + {/* 헤더 */} + <div className="flex items-center justify-between"> + <div> + <h2 className="text-2xl font-bold tracking-tight"> + DOLCE 문서 업로드 + </h2> + <p className="text-muted-foreground"> + 설계문서를 조회하고 업로드할 수 있습니다 + </p> + </div> + </div> + + {/* 메인 컨텐츠 */} + <Suspense fallback={<DolceUploadSkeleton />}> + <DolceUploadPage searchParams={params} /> + </Suspense> + </Shell> + ); +}
\ No newline at end of file |
